package com.wzh.microservice.dubbo.consumer;

import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;

import com.wzh.microservice.dubbo.common.XxxServiceInterface;


/**
 * 服务消费者实现类
 */
public class Customer {
       

	public void consume() {
		ApplicationConfig application = new ApplicationConfig();
		application.setName("yyy");
		 
		// 连接注册中心配置
		RegistryConfig registry = new RegistryConfig();
		registry.setAddress("zookeeper://127.0.0.1:2181");
		registry.setUsername("aaa");
		registry.setPassword("bbb");
		 
		// 注意：ReferenceConfig为重对象，内部封装了与注册中心的连接，以及与服务提供方的连接
		 
		// 引用远程服务
		ReferenceConfig<XxxServiceInterface> reference = new ReferenceConfig<XxxServiceInterface>(); // 此实例很重，封装了与注册中心的连接以及与提供者的连接，请自行缓存，否则可能造成内存和连接泄漏
		reference.setApplication(application);
		reference.setRegistry(registry); // 多个注册中心可以用setRegistries()
		reference.setInterface(XxxServiceInterface.class);
		reference.setVersion("1.0.0");
		 
		// 和本地bean一样使用xxxService
		XxxServiceInterface xxxService = reference.get();
		String name="wangzhenhai";
		xxxService.sayHello(name);
	}
	
	public static void main(String[] args) {
		new Customer().consume();
		System.out.println("服务调用结束");
	}

}
